Reference
- Kaggle 홈페이지 - Kaggle
- 11강 ‘Strings and Dictionaries’ - Python Micro-Course Home Page
영어 실력이 부족하여 문맥이 이해가 가지 않는 부분은 원문을 참고하시길 바랍니다…
언젠가는 실력이 나아지기를…
이번 강에서는 파이썬의 필수적인 타입인 strings 와 dictionaries 에 대해 알아보겠습니다.
문자열(Strings)
파이썬의 장점이 빛나는 순간 중 하나는 문자열을 조작할 때 입니다. 이번 섹션에서 파이썬에 내장된 문자열 함수들과 포맷팅 작업들에 대해 알아보겠습니다.
문자열 조작 패턴들은 데이터 사이언스(데이터 분석/마이닝) 작업할 때 자주 등장하는데, 이런 맥락에서 볼 때 문자열 조작은 파이썬의 큰 장점 중 하나라고 할 수 있습니다.
문자열 문법(String syntax)
이전 수업들의 예제에서 많은 문자열들을 다루며 이미 아시겠지만, 간단히 요약하자면 파이썬의 문자열은 작은 따옴표나 큰 따옴표 중 하나를 사용하여 정의 할 수 있습니다. 둘은 기능적으로 동일합니다.
문자열에 작은 따옴표가 들어가는 경우(e.g. apostrophe) 큰 따옴표를 사용하면 편리합니다.
마찬가지로 큰 따옴표가 포함된 문자열은 작은 따옴표로 묶으면 쉽게 만들 수 있습니다.
만약 작은 따옴표로 묶은 문자열에 작은 따옴표 문자를 넣으면 우리가 원하는 것과는 다르게 파이썬은 잘못 이해할 수 있습니다.
'Pluto's a planet!' |
File "<ipython-input-3-a43631749f52>", line 1 |
작은 따옴표 문자에 백슬래시로 “예외” 처리하여 이를 해결할 수는 있습니다.
아래의 표는 백슬래시 문자 사용법의 요약입니다.
What you type… | What you get | example | print(example) |
---|---|---|---|
\' |
' |
'What\'s up?' |
What's up? |
\" |
" |
"That's \"cool\"" |
That's "cool" |
\\ |
\ |
"Look, a mountain: /\\" |
Look, a mountain: /\ |
\n |
"1\n2 3" |
1 2 3 |
표 마지막의 \n
은 개행 문자를 나타냅니다. 이를 통해 파이썬에서 줄 바꿈이 발생합니다.
또 다른 방법으로, 파이썬에서 문자열에 따옴표 세 개(triple quote syntax for strings)를 사용하면 입력하는 문자 그대로 개행 문자도 포함 할 수 있습니다.(즉, ‘\n’ 시퀀스를 사용하지 않고 키보드에서 ‘Enter’키를 치는 것만으로 줄 바꿈이 일어납니다). 우리는 함수를 문서화하는 데 사용하는 docstrings 을 배우면서 이것을 한번 본적이 있는데 사실 문자열을 정의하고자 하는 곳이면 어디에서나 사용할 수 있습니다.
print()
함수는 end
키워드 인자에 특별한 값을 지정하지 않는한 기본값으로 '\n'
을 가지기 때문에 자동으로 개행 문자를 추가합니다.
Strings are sequences
문자열(string)은 연속된 문자들(characters)로 생각할 수 있습니다. 우리가 list로 할 수 있는 거의 모든 것을 문자열에서도 할 수 있습니다.
하지만 list와 가장 큰 차이점은 문자열은 불변(immutable)이라는 점입니다. 우리는 문자열을 수정할 수 없습니다.
planet[0] = 'B' |
TypeError Traceback (most recent call last)
<ipython-input-12-6ca42463b9f9> in <module>()
----> 1 planet[0] = 'B'
2 # planet.append doesn't work either
TypeError: 'str' object does not support item assignment
|
문자열 메소드(String methods)
list
처럼, str
타입에는 매우 유용한 메소드들일 많이 있습니다. 몇 가지 예시를 보여드리겠습니다.
claim = "Pluto is a planet!" |
Going between strings and lists: .split() and .join()
str.split()
은 하나의 문자열을 공백 문자를 기준으로 분리한 작은 문자들로 이루어진 list로 바꿔 줍니다. 이는 하나의 큰 문자열을 단어 하나하나로 나눈 list로 바꾸는데 매우 유용합니다.
str.join()
은 반대의 기능을 한다고 보시면 됩니다, seperator(분리자)로 분리되었던 문자(열) list를 하나의 긴 문자열로 묶어줍니다.
Building strings with .format()
파이썬에서는 +
연산자를 사용해서 문자열을 합칠 수 있습니다.
문자열이 아닌 객체를 사용할 때는 str()
을 먼저 호출하여 문자열로 바꿔줘야 하는 점을 주의하셔야 합니다.
position = 9 |
|
가독성이 떨어지고 일일이 타입을 확인하며 바꿔줘야하는게 귀찮을 것 같습니다. str.format()
을 사용하면 이를 해결할 수 있습니다.
훨씬 깔끔한 것 같습니다! “format string”에 .format()
을 호출하고, 우리가 삽입하고자 하는 파이썬 값은 {}
로 표현되는 placeholder에 들어갈 것 입니다.
우리가 int형인 position
을 변환하기 위해 str()
을 호출 할 필요가 없었던 점에 주목하십시오. format()
에서 이를 알아서 처리합니다.
이게 format()
이 하는 일의 전부라해도 우리는 이를 매우 유용하게 사용할 것 입니다. 하지만 알아갈 수록 이 함수로 할 수 있는게 훨씬 더 많다는 것을 깨닫게 될 것 입니다. 조금만 더 알아보겠습니다.
조금 과장하자면 str.format
에 대한 설명과 내용으로 짧은 책을 쓸 수도 있기 때문에 가볍게 알아보는 본 강의에서는 이쯤에서 멈추겠습니다.
더 자세히 알고 싶으신 분은 pyformat.info와 the offical docs 를 읽어 보시길 바랍니다.
딕셔너리(Dictionaries)
딕셔너리(Dictionary)는 키(Key)를 값(Value)에 매핑(mapping)하기 위한 파이썬에 내장된 데이터 구조입니다.
value는 list 및 string과 유사하게 대괄호 구문을 사용하여 액세스됩니다.
똑같은 방식을 사용하여 다른 key, value 쌍을 추가 할 수 있습니다.
혹은 존재하는 key의 value를 수정 할 수도 있습니다.
이전 강좌에서 봤던 list 내포처럼 파이썬은 dictionary 내포를 지원합니다.
in
연산자를 사용하여 우리는 dicionary에 어떠한 key가 존재하는지 알아볼 수 있습니다.
dictionary 에서의 for 반복문은 해당 key들을 반복합니다.
dict.keys()
및 dict.values()
를 사용하여 모든 key 또는 모든 value들에 각각 액세스 할 수 있습니다.
보다 유용한 dict.items()
메소드는 dictionary의 key와 value를 동시에 반복 할 수있게 해줍니다. (파이썬에서는 item 은 곧 key와 value 쌍을 뜻합니다)
dictionary의 method 전체 목록이 궁금하시면 아래의 “help(dict)”버튼을 클릭하여 전체 도움말 페이지를 읽거나 공식 온라인 문서를 확인하십시오.
Help on class dict in module builtins: |
연습문제(Your Turn)
strings and dictionaries 예제